package com.marktotop.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.marktotop.entity.system.Menu;
import com.marktotop.error.SystemException;
import com.marktotop.vo.system.MenuNodeVO;
import com.marktotop.vo.system.MenuVO;

import java.util.List;

/**
 * <p>
 * 菜单表 服务类
 * </p>
 *
 * @author MarkToTop
 * @since 2021-07-12
 */
public interface IMenuService extends IService<Menu> {

    /**
     * 加载菜单
     * @return
     */
    List<MenuNodeVO> findMenu();


    /**
     * 获取菜单树
     * @return
     */
    List<MenuNodeVO> findMenuTree();


    /**
     * 所有展开菜单的ID
     * @return
     */
    List<Long> findOpenIds();


    /**
     * 添加菜单/按钮
     *
     * @param menuVO
     * @return
     */
    Menu addMenus(MenuVO menuVO);


    /**
     * 编辑菜单详情
     *
     * @param id
     * @return
     * @throws SystemException
     */
    MenuVO editMenu(Long id) throws SystemException;


    /**
     * 更新菜单/按钮
     *
     * @param id
     * @param menuVO
     * @throws SystemException
     */
    void updateMenu(Long id, MenuVO menuVO) throws SystemException;
}
